Haut Précedent Suivant Titre Sommaire

8.2.3 - Serveur Hercule :

8.2.3.A - Concentrateur IPSEC :

Le serveur Hercule est destiné à pouvoir établir des tunnels IPSEC entre un client distant et les DMZ au travers d’Internet. Installer cette fonctionnalité passe par une mise à jour et une recompilation du noyau Linux mis à jour à l’aide du patch FreeSwan.
L’installation IPSEC passe par les manipulations suivantes :
è	Installation du package « initrd-tools » (obligatoire pour un noyau 2.4) 
è	Installation des sources Linux : 
   apt-get install kernel-source-2.4.18
è	Installation du patch FreeSwan : 
   apt-get install kernel-patch-freeswan
è	cd /usr/src
è	Décompilation des sources Linux :
	   tar –xzf kernel-source-2.4.18.tar.bz2
è	cd kernel-source-2.4.18
è	../kernel-patches/all/apply/Freeswan
è	export PATCH_THE_KERNEL=auto
è	Compilation du noyau Linux :
   make-kpkg –added-patches=Freeswan –append-to-version=-1-Freeswan-sga –revision=hercule.1 –config=menuconfig configure
   make-kpkg clean
   make-kpkg –initrd –revision=hercule.1 kernel-image

NB : La configuration en cours d’un serveur Linux est toujours stockée dans un fichier /boot/configxxxxx. Ce fichier au format texte contient toutes les options utilisées pour la compilation du noyau en cours !
8.2.3.A.1 - Installation du noyau généré :
Le noyau généré par les opérations décrites ci-dessus se trouve dans le répertoire « /usr/src ». Pour installer ce noyau il faut effectuer les opérations suivantes :
è	modification du fichier « /etc/lilo.conf ». Le fichier du serveur Hercule est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration du chargeur de demarrage lilo
#             : Voir man lilo et man lilo.conf pour tous les details
#             : NE PAS OUBLIER DE LANCER LA COMMANDE LILO APRES TOUTE
#             : MODIFICATION DE CE FICHIER !!!
# Serveur     : Hercule
# Copyright   : marc.boget@gendarmerie.org

# Support du mode LBA pour les disques de grande capacité
#
lba32

# Specification du disque de demarrage : cela peut etre soit un disque
# soit un partition : dans le cas d'un disque cela signifie que lilo doit
# ecrire dans le MBR
boot=/dev/sda

# Definition de la partition à monter comme "/"
root=/dev/sda5

# Definition du fichier a installer comme nouveau secteur de boot
install=/boot/boot-menu.b

# Definition de la table de caracteres a utiliser au demarrage 
map=/boot/map

# Definition du mot de passe allant de pair avec l'option restricted
# Ce mot de passe est exigé des que la configuration de boot souhaitée
# n'est pas celle par defaut. Cela permet d'eviter qu'un pirate puisse
# bypasser la sequence de boot normal
password=sga

# Definition du temps d'attente avant demarrage de la config par defaut
delay=20

prompt
timeout=150

# Definition du mode graphique au demarrage de lilo
vga=normal

# Nom de l'image de boot par defaut
default=Linux-Freeswan

# Definition des images de boot disponibles
image=/vmlinuz.freeswan
	label=Linux-Freeswan
	read-only
	initrd=/initrd.img
	restricted
	alias=1

image=/vmlinuz
	label=Linux
	read-only
	initrd=/initrd.img
	restricted
	alias=2

image=/vmlinuz.old
	label=Linux-bf24
	read-only
	restricted
	alias=3

# Definition d'une partition de boot de type autre
other=/dev/sda1
  label="Part. Compaq"

è	installation du package généré à l’aide de la commande « dpkg –i /usr/src/kernel-image-2.4.18-hercule.1
8.2.3.A.2 - Mise en place des tunnels IPSEC :
Un tunnel IPSEC se traduit par l’utilisation de deux certificats. Les manipulations décrites paragraphe ‎8.2.1 - doivent être mises en œuvre pour la génération d’un certificat IPSEC destiné au concentrateur FreeSwan ainsi que d’un certificat IPSEC par client devant se connecter sur le concentrateur.
Le fichier de configuration du serveur FreeSwan est le fichier « /etc/ipsec.conf ». Le fonctionnement de FreeSwan est d’indiquer ce qu’il doit considérer comme étant à « gauche » de lui et ce qu’il doit considérer comme étant à droite de lui. La notion de gauche et de droite n’a aucune signification particulière, la seule contrainte étant que les informations doivent être cohérente entre ce que le concentrateur FreeSwan considère comme étant à gauche ou à droite et ce que le client IPSEC considère lui comme étant la gauche et la droite !!!.
Le fichier de configuration de FreeSwan du serveur Hercule est relativement explicite et est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration du concentrateur FreeSwan
#             : Voir /usr/share/doc/freeswan/doc/index.htmlpour tous les details
# Serveur     : Hercule
# Copyright   : marc.boget@gendarmerie.org
#

# Paramétrage par defaut du concentrateur FreeSwan
config setup
	# defaultroute correspond à la route correspondante au paquet
	# c'est a dire celle trouvée en appliquant les regles classiques
	# du routage IP
	#interfaces=%defaultroute
	# On peut aussi définir specifiquement l'interfaces qui fait 
# de l'IPSEC
	interfaces="ipsec0=eth1"
	# Controle du mode debug : bon courage !!!
	klipsdebug=none
	plutodebug=none
	# Permet de definir si la connexion definie est automatiquement
	# activée au demarrage au juste chargée
	# Use auto= parameters in conn descriptions to control startup actions.
	plutoload=%search
	plutostart=%search
	#plutoload="sga"
	#plutostart="sga"
	# Option permettant de fermer les vieilles connections quand une nelle
	# portant le meme ID se pointe : cela permet de retomber sur ces pieds
	# en cas d'arret brutal de la connexion
	uniqueids=yes

# Paramétrage par defaut des connexions
conn %default
	keyingtries=1
	compress=yes
	disablearrivalcheck=no

# Definition du réseau des clients
conn sga2-net
	leftsubnet=192.168.0.0/24
	also=sga2

# Definition de la connexion IPSEC
conn sga2
	authby=rsasig
	leftrsasigkey=%cert
	left=%any
	rightrsasigkey=%cert
	right=192.168.0.1
	rightsubnet=10.1.4.0/24
	rightcert=/etc/ipsec.d/hercule.pem
	pfs=yes
	auto=add

# Des exemples en vrac ...
# connection description for (experimental!) opportunistic encryption
# (requires KEY record in your DNS reverse map; see doc/opportunism.howto)
#conn me-to-anyone
#	left=%defaultroute
#	right=%opportunistic
#	keylife=1h
#	rekey=no
#	# uncomment this next line to enable it
#	#auto=route


# sample VPN connection
#conn sample
#	# Left security gateway, subnet behind it, next hop toward right.
#	left=%any
#	leftsubnet=192.168.0.0/24
#	#leftnexthop=10.22.33.44
#	# Right security gateway, subnet behind it, next hop toward left.
#	right=10.12.12.1
#	rightsubnet=192.168.0.0/24
#	rightnexthop=10.101.102.103
#	# To authorize this connection, but not actually start it, at startup,
#	# uncomment this.
#	#auto=add

#conn sga
#	# Left security gateway, subnet behind it, next hop toward right.
#	left=%any
#	#leftsubnet=192.168.0.0/24
#	#leftnexthop=10.22.33.44
#	# Right security gateway, subnet behind it, next hop toward left.
#	right=192.168.0.1
#	rightsubnet=10.1.4.0/24
#	rightnexthop=10.1.4.5
#	# To authorize this connection, but not actually start it, at startup,
#	# uncomment this.
#	auto=add

#leftid="C=FR, ST=France, L=MALAKOFF, O=SGA, OU=Maquette de test, CN=cassiopee7"
#rightid="E=root@sga.def, C=FR, ST=FRANCE, L=MALAKOFF, O=SGA, OU=Maquette de test, CN=Hercule"

NB : le fichier /etc/ipsec.d/hercule.pem doit être enregistré au format PEM (cf. paragraphe ‎8.2.1.B - ). La clé correspondante « hercule.key » est situé dans le répertoire défini dans le fichier « /etc/ipsec.secrets » dont un exemple est donné ci-dessous :

: RSA /etc/ipsec.d/private/hercule.key

Le caractère « : » permet éventuellement de specifier quelle connexion doit utiliser cette clé secrète ...
8.2.3.A.3 - Installation des clients IPSEC Windows :
L’installation des clients IPSEC sous Windows 2000 s’effectue en deux temps :
8.2.3.A.3.a - Installation du certificat IPSEC :
De manière à installer le certificat IPSEC il faut :
è	générer le certificat (cf. paragraphe ‎8.2.1 - ) ;
è	lancer la MMC (Microsoft Management Console) sur le poste client IPSEC ;
è	choisir dans le menu « Console » l’option « Ajouter/Supprimer un composant logiciel enfichable » ;
è	cliquer sur « Ajouter » et choisir « Certificats » puis « le compte de l’ordinateur »
è	cliquer sur « Personnel » puis « Certificats » puis faire « Actions - Toutes les taches – Importer » et importer le certificat client. En effet le certificat IPSEC doit être attaché à l’ordinateur et non à l’utilisateur ce qui se passe immanquablement lorsque l’on double clique sur le fichier .PFX !!!
8.2.3.A.3.b - Paramétrage de la stratégie IP :
La stratégie IP se paramètre à l’aide de la MMC « Stratégie de sécurité locale » (Menu Edition / Paramètres / Outils d’administration / Stratégie de sécurité locale). L’installation des outils de Marcus Muller (http://vpn.ebootis.de) permet l’adoption d’un fichier de configuration du client ressemblant au fichier de configuration du concentrateur Freeswan. Il est à noter que ces outils ne font que paramétrer automatiquement la liaison (il suffit d’examiner la politique FreeSwan au travers de la MMC pour en avoir la preuve). De manière à permettre un affichage plus concis le contenu de ce fichier est donné ci-dessous en lieu et place des copies d’écran de la MMC :
conn Cassiopee6
	left=%any
	leftsubnet=192.168.0.6/32
	right=192.168.0.1
	rightsubnet=10.1.4.0/24
	rightca="E=ca@sga.def, C=FR, O=SGA, CN=Autorite certification test maquette SGA"
	network=auto
	auto=start
	pfs=yes
8.2.3.A.3.c - Activation du mode DEBUG des clients IPSEC :
Pour activer le mode debug des clients Windows IPSEC il faut effectuer les manipulations suivantes :
è	Création de la clé HKLM/System/Current Control Set/Services/PolicyAgent/OAKLEY
è	Création du DWORD « EnableLogging=1 » sous OAKLEY
è	net stop policyagent
è	net start policyagent

Les traces de debug IPSEC sont alors activées dans le fichier \WINNT\DEbug\Oakley.log

8.2.3.B - Serveur de temps :

NTP signifie Network Time Protocol et permet a une machine cliente de synchroniser son horloge sur un serveur de strate N lui même se synchronisant sur un serveur de strate supérieure ou directement sur un serveur de référence.
8.2.3.B.1 - Partie serveur :
La partie serveur du démon NTP (version 1:4.1.0-8) s’installe à l’aide de la commande suivante :
è	apt-get install ntp

L’installation de ce démon nécessite l’installation des programmes suivants :
- ntp-simple ou ntp-refclock, 
- debconf, 
- libc6 (version >= 2.2.4-4), 
- libreadline4 (version >= 4.2a-4)

Le fichier de configuration de ce démon est le fichier /etc/ntp.conf. La configuration employée sur le serveur Hercule est la suivante :
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration du démon NTP
# Serveur     : Hercule
# Copyright   : marc.boget@gendarmerie.org

# Dans le cas ou la directive logfile n'est pas définie, le démon NTP
# utilise syslog
logfile /var/log/ntpd

# Fichier contenant la dérive de temps ou drift
driftfile /var/lib/ntp/ntp.drift

# Fichier de stats
statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Serveurs de synchronisation
# La directive « prefer » permet d’indiquer le serveur de prédilection
server ntp.univ-lyon1.fr prefer
server ntp.obspm.fr
server ntp.tuxfamily.net

8.2.3.C - Déport des logs :

Il a été fait le choix de concentrer les logs sur la machine « PetiteOurse ». De manière à ne pas aider un éventuel pirate à deviner le déport de logs il a été mis en place les mécanismes suivants :
è	apt-get install logrotate
- libc6 (version >= 2.2.4-4) ;
- libpopt0 (version >= 1.6.2-1) ;
- cron (version >= 3.0pl1-53) ou anacron ;
- mailx ;
- base-passwd (version >= 2.0.3.4)
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration pour la compression des logs
#             : Voir man logrotate pour plus de details
# Serveur     : Hercule
# Copyright   : marc.boget@gendarmerie.org

# Compression des logs chaque semaine
weekly

# Conservation des logs sur 4 périodes (soit 4 semaines)
rotate 4

# Creation de fichiers de logs vide après rotation
create

# Compression des logs au moment de la rotation
compress

# Répertoire contenant les directives particulières à certains logs
include /etc/logrotate.d

# Exemple de directives pouvant être incluses dans le rep. ci-dessus
# La directive missingok permet d’éviter la génération d’un log si le
# fichier de logs attendu n’existe pas !
/var/log/wtmp {
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration du démon syslog
#             : Voir man syslog.conf pour tous les details
# Serveur     : Hercule
# Copyright   : marc.boget@gendarmerie.org

# Deport des logs sur PetiteOurse
*.*                             @petiteourse

# Traitement par catégories d'evenements
# La colonne de gauche indique la catégorie
# La colonne de droite indique l'action à effectuer
# Le signe "-" devant certains fichiers de droite indique
# que le système n'est pas obligé de synchroniser son disque
# a chaque écriture (gain en vitesse mais perte d'informations
# en cas de crash serveur).

auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log
uucp.*                          /var/log/uucp.log
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice

*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

# Les événements de la catégorie emergency sont envoyés à tous
# les utilisateurs loggés

*.emerg                         *

#
# Exemple pour envoyer les logs sur un TTY particulier
#
#daemon,mail.*;\
#       news.=crit;news.=err;news.=notice;\
#       *.=debug;*.=info;\
#       *.=notice;*.=warn       /dev/tty8

# Pour envoyer les logs sur la console xconsole
# Peu utile sur un serveur sans serveur X !
# Attention : il faut invoquer xconsole avec l'option -file
# pour pouvoir avoir les logs : ex : xconsole -file /dev/xconsole [...]

daemon.*;mail.*;\
        news.crit;news.err;news.notice;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       |/dev/xconsole

8.2.3.D - Firewall de paquets :

Le démon iptables (version 1.2.6a-5) s’installe à l’aide de la commande suivante :
è	apt-get install iptables
Il dépend des packages suivants :
- libc6 (version >= 2.2.4-4), 
- debconf (version >= 0.5)
Il est entièrement paramétré à l’aide du script « /etc/init.d/rc.firewall » lancé au démarrage du serveur (il faut créer les liens symboliques Sxxfirewall et Kxxfirewall dans le répertoire correspondant au niveau de démarrage par défaut du serveur Linux, ici « /etc/rc2.d/ ») :
#!/bin/bash
#
# Emplacement : Maquette de test SGA
# Description : Fichier de parametrage du firewall par paquets
# Serveur     : Hercule
# Copyright   : marc.boget@gendarmerie.org
#


# Definition des différentes interfaces du FW
#--------------------------------------------
interface_pub_externe=eth0
interface_externe=eth1
interface_reverse=eth2
interface_conf_externe=eth3
interface_esentry=eth4

# Définition des différents réseaux raccordés au FW
#--------------------------------------------
reseau_externe=192.168.0.0/24
reseau_pub_externe=10.1.2.0/24
reseau_conf_externe=10.1.1.0/24
reseau_esentry=10.1.3.0/24
reseau_interne=52.30.184.0/24
reseau_reverse=10.1.4.0/24
reseau_interco=10.1.6.0/24

# Définition des éléments clés du réseau
#--------------------------------------------
colombe=10.1.1.2
pegase=10.1.2.2
eridan=10.1.3.3
grandeourse=10.1.3.2
dauphin=52.30.184.1
fleche=10.1.4.2
petiteourse=10.1.4.3
routeur_internet=192.168.0.101
firewall_applicatif=10.1.6.2
honeypot=10.1.1.4

# Définition des éléments clés externe au réseau
#--------------------------------------------
serveur_ref_ntp1=$(host ntp.univ-lyon1.fr|grep address|cut -d' ' -f4)
serveur_ref_ntp2=$(host ntp.obspm.fr|grep address|cut -d' ' -f4)
serveur_ref_ntp3=$(host ntp.tuxfamily.net|grep address|cut -d' ' -f4)
serveur_ref_dns1=212.46.206.2
serveur_ref_dns2=194.2.0.20
serveur_ref_dns3=194.2.0.50
serveurs_maj_debian="security.debian.org debian.via.ecp.fr non-us.debian.org ftp.fr.debian.org"

# Définition des ports utilisés dans le cadre de la maquette
#--------------------------------------------
port_web=80
port_web_ssl=443
port_web_fullssl=4443
port_dns=53
port_ntp=123
port_ipsec=500
port_imap=143
port_imap_ssl=993
port_smtp=25
port_syslog=514
port_ldap=389
port_ldap_ssl=636
port_agent_esentry=1701
port_ssh=22
ports_tcp_windows="138 139 445"
ports_udp_windows="137 138 139"

case "$1" in
  start)

#==================================
# PARTIE INITIALISATION
#--------------------------------------------
# -F: permet de vider toutes les regles d'une chaine 
# -X: permet d'effacer une chaine 
# -P: permet de spécifier au kernel la target par defaut d'une chaine 
# PREROUTING : a l'arrivee du firewall
# POSTROUTING: a la sortie du firewall
#==================================

# On va utiliser iptable si on l'a compilé en module
# dans le kernel, il faut charger le module ip_tables
#--------------------------------------------
modprobe ip_tables

# On va charger quelques modules supplémentaires 
# pour gérer la translation d'adresse
#--------------------------------------------
modprobe iptable_filter
modprobe iptable_nat

# Vidage des chaînes 
#--------------------------------------------
iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F

#Destruction des chaînes "personnelles"
#--------------------------------------------
iptables -X

# Définition d'une chaîne permettant de logguer puis de dropper
#--------------------------------------------------------------
iptables -N LOG_PUIS_DROP 2>/dev/null
iptables -F LOG_PUIS_DROP
iptables -A LOG_PUIS_DROP -j LOG --log-prefix="[FW Paquet rejete]: " #--log-level notice
iptables -A LOG_PUIS_DROP -j DROP

#Stratégie par défaut: DROP
#--------------------------------------------
#iptables -P INPUT   DROP
#iptables -P FORWARD DROP
#iptables -P OUTPUT  DROP

#==================================
# PARTIE DEFINITION 
#==================================

# Toutes les connexions établies et relatives sont acceptées
iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Autorise accès machine locale
#--------------------------------------------
iptables -A INPUT  -i lo -p ALL -j ACCEPT 
iptables -A OUTPUT -o lo -p ALL -j ACCEPT 

# Autorise acces DNS des serveurs de la maquette
#--------------------------------------------
for serveur_ref_dns in $serveur_ref_dns1 $serveur_ref_dns2 $serveur_ref_dns3
do
	iptables -A OUTPUT \
		-p udp --destination-port $port_dns \
		-d $serveur_ref_dns \
		-o $interface_externe \
		-j ACCEPT

	iptables -A FORWARD \
		-p udp --destination-port $port_dns \
		-s $reseau_pub_externe -d $serveur_ref_dns \
		-i $interface_pub_externe -o $interface_externe \
		-j ACCEPT

	iptables -A FORWARD \
		-p udp --destination-port $port_dns \
		-s $reseau_conf_externe -d $serveur_ref_dns \
		-i $interface_conf_externe -o $interface_externe \
		-j ACCEPT

	iptables -A FORWARD \
		-p udp --destination-port $port_dns \
		-s $reseau_esentry -d $serveur_ref_dns \
		-i $interface_esentry -o $interface_externe \
		-j ACCEPT

	iptables -A FORWARD \
		-p udp --destination-port $port_dns \
		-s $reseau_interco -d $serveur_ref_dns \
		-i $interface_reverse -o $interface_externe \
		-j ACCEPT

	iptables -A FORWARD \
		-p udp --destination-port $port_dns \
		-s $reseau_interne -d $serveur_ref_dns \
		-i $interface_reverse -o $interface_externe \
		-j ACCEPT

	iptables -A FORWARD \
		-p udp --destination-port $port_dns \
		-s $reseau_reverse -d $serveur_ref_dns \
		-i $interface_reverse -o $interface_externe \
		-j ACCEPT
done

# Autorise acces WEB 
#--------------------------------------------
iptables -A FORWARD \
	-p tcp --destination-port $port_web \
	-s $reseau_externe -d $fleche \
	-i $interface_externe -o $interface_reverse \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web \
	-s $firewall_applicatif -d $colombe \
	-i $interface_reverse -o $interface_conf_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web \
	-s $firewall_applicatif -d $pegase  \
	-i $interface_reverse -o $interface_pub_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web_ssl \
	-s $reseau_externe -d $eridan \
	-i $interface_externe -o $interface_esentry \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web_ssl \
	-s $reseau_externe -d $fleche \
	-i $interface_externe -o $interface_reverse \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web_ssl \
	-s $fleche -d $eridan \
	-i $interface_reverse -o $interface_esentry \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web_ssl \
	-s $fleche -d $colombe \
	-i $interface_reverse -o $interface_conf_externe \
	-j ACCEPT

# Autorise dialogue agents E-Sentry 
#--------------------------------------------
iptables -A FORWARD \
	-p tcp --destination-port $port_agent_esentry \
	-s $fleche -d $eridan \
	-i $interface_reverse -o $interface_esentry \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_agent_esentry \
	-s $colombe -d $eridan \
	-i $interface_conf_externe -o $interface_esentry \
	-j ACCEPT

# Autorise acces LDAPS pour authentification utilisateur
#--------------------------------------------
iptables -A OUTPUT \
	-p tcp --destination-port $port_ldap_ssl \
	-d $grandeourse \
	-o $interface_esentry \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ldap_ssl \
	-s $reseau_reverse -d $grandeourse \
	-i $interface_reverse -o $interface_esentry \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ldap_ssl \
	-s $reseau_conf_externe -d $grandeourse \
	-i $interface_conf_externe -o $interface_esentry \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ldap_ssl \
	-s $reseau_pub_externe -d $grandeourse \
	-i $interface_pub_externe -o $interface_esentry \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ldap_ssl \
	-s $reseau_interne -d $grandeourse \
	-i $interface_reverse -o $interface_esentry \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ldap_ssl \
	-s $firewall_applicatif -d $grandeourse \
	-i $interface_reverse -o $interface_esentry \
	-j ACCEPT

# Autorise acces SYSLOG pour deport des logs
#--------------------------------------------
iptables -A OUTPUT \
	-p udp --destination-port $port_syslog \
	-d $petiteourse \
	-o $interface_reverse \
	-j ACCEPT

iptables -A FORWARD \
	-p udp --destination-port $port_syslog \
	-s $reseau_conf_externe -d $petiteourse \
	-i $interface_conf_externe -o $interface_reverse \
	-j ACCEPT

iptables -A FORWARD \
	-p udp --destination-port $port_syslog \
	-s $reseau_pub_externe -d $petiteourse \
	-i $interface_pub_externe -o $interface_reverse \
	-j ACCEPT

iptables -A FORWARD \
	-p udp --destination-port $port_syslog \
	-s $reseau_esentry -d $petiteourse \
	-i $interface_esentry -o $interface_reverse \
	-j ACCEPT

# Autorise acces NTP pour mise a l'heure des serveurs
#--------------------------------------------
for serveur_ref_ntp in $serveur_ref_ntp1 $serveur_ref_ntp2 $serveur_ref_ntp3
do
	iptables -A OUTPUT \
		-p udp --destination-port $port_ntp \
		-d $serveur_ref_ntp \
		-o $interface_externe \
		-j ACCEPT
done

iptables -A INPUT \
	-p udp --destination-port $port_ntp \
	-s $reseau_esentry \
	-i $interface_esentry \
	-j ACCEPT

iptables -A INPUT \
	-p udp --destination-port $port_ntp \
	-s $reseau_reverse \
	-i $interface_reverse \
	-j ACCEPT

iptables -A INPUT \
	-p udp --destination-port $port_ntp \
	-s $reseau_conf_externe \
	-i $interface_conf_externe \
	-j ACCEPT

iptables -A INPUT \
	-p udp --destination-port $port_ntp \
	-s $reseau_pub_externe \
	-i $interface_pub_externe \
	-j ACCEPT

# Autorise transfert de messages entre serveurs
#--------------------------------------------
iptables -A FORWARD \
	-p tcp --destination-port $port_smtp \
	-s $pegase -d $dauphin \
	-i $interface_pub_externe -o $interface_reverse \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_smtp \
	-s $firewall_applicatif -d $pegase \
	-i $interface_reverse -o $interface_pub_externe \
	-j ACCEPT

# Autorise acces Messagerie pour les clients
#--------------------------------------------
iptables -A FORWARD \
	-p tcp --destination-port $port_imap \
	-s $reseau_externe -d $pegase \
	-i $interface_externe -o $interface_pub_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_imap_ssl \
	-s $reseau_externe -d $pegase \
	-i $interface_externe -o $interface_pub_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_smtp \
	-s $reseau_externe -d $pegase -o $interface_pub_externe \
	-i $interface_externe \
	-j ACCEPT

# Autorise MAJ des serveurs sur sites debian
#--------------------------------------------
for serveur_maj in $serveurs_maj_debian
do
iptables -A OUTPUT \
	-p tcp --destination-port $port_web \
	-d $serveur_maj \
	-o $interface_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web \
	-s $reseau_reverse -d $serveur_maj \
	-i $interface_reverse -o $interface_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web \
	-s $reseau_pub_externe -d $serveur_maj \
	-i $interface_pub_externe -o $interface_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web \
	-s $reseau_conf_externe -d $serveur_maj \
	-i $interface_conf_externe -o $interface_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web \
	-s $reseau_esentry -d $serveur_maj \
	-i $interface_esentry -o $interface_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web \
	-s $reseau_interco -d $serveur_maj \
	-i $interface_reverse -o $interface_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_web \
	-s $reseau_interne -d $serveur_maj \
	-i $interface_reverse -o $interface_externe \
	-j ACCEPT
done

# Autorise acces Webmail pour les clients
#--------------------------------------------
iptables -A FORWARD \
	-p tcp --destination-port $port_web_ssl \
	-s $reseau_externe -d $dauphin \
	-i $interface_externe -o $interface_reverse \
	-j ACCEPT

# Autorise administration SSH des serveurs
#--------------------------------------------
iptables -A INPUT \
	-p tcp --destination-port $port_ssh \
	-j ACCEPT

iptables -A OUTPUT \
	-p tcp --destination-port $port_ssh \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ssh \
	-d $reseau_conf_externe \
	-o $interface_conf_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ssh \
	-d $reseau_pub_externe \
	-o $interface_pub_externe \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ssh \
	-d $reseau_reverse \
	-o $interface_reverse \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ssh \
	-d $reseau_interne \
	-o $interface_reverse \
	-j ACCEPT

iptables -A FORWARD \
	-p tcp --destination-port $port_ssh \
	-d $reseau_esentry \
	-o $interface_esentry \
	-j ACCEPT

# Autorise acces Windows avec controleur SAMBA
#--------------------------------------------
for port_tcp_windows in $ports_tcp_windows
do
iptables -A FORWARD \
	-p tcp --destination-port $port_tcp_windows \
	-d $colombe \
	-o $interface_conf_externe \
	-j ACCEPT
done

for port_tcp_windows in $ports_tcp_windows
do
iptables -A FORWARD \
	-p tcp --source-port $port_tcp_windows \
	-s $colombe \
	-i $interface_conf_externe \
	-j ACCEPT
done

for port_udp_windows in $ports_udp_windows
do
iptables -A FORWARD \
	-p udp --source-port $port_udp_windows \
	-d $colombe \
	-o $interface_conf_externe \
	-j ACCEPT
done

for port_udp_windows in $ports_udp_windows
do
iptables -A FORWARD \
	-p udp --destination-port $port_udp_windows \
	-s $colombe \
	-i $interface_conf_externe \
	-j ACCEPT
done

# Autorise tout acces sur honeyPot
#--------------------------------------------
iptables -A FORWARD \
	-d $honeypot \
	-o $interface_conf_externe \
	-j ACCEPT 

# Mise en place du masquage d'adresse pour les adresses internes
#----------------------------------------------------------------
iptables -t nat -A POSTROUTING -s $reseau_interne -o $interface_externe -j MASQUERADE
iptables -t nat -A POSTROUTING -s $reseau_interco -o $interface_externe -j MASQUERADE
iptables -t nat -A POSTROUTING -s $reseau_reverse -o $interface_externe -j MASQUERADE
iptables -t nat -A POSTROUTING -s $reseau_esentry -o $interface_externe -j MASQUERADE
iptables -t nat -A POSTROUTING -s $reseau_conf_externe -o $interface_externe -j MASQUERADE
iptables -t nat -A POSTROUTING -s $reseau_pub_externe -o $interface_externe -j MASQUERADE

# Autorise le ping 
#--------------------------------------------
iptables -A INPUT   -p icmp -j ACCEPT 
iptables -A OUTPUT  -p icmp -j ACCEPT 
iptables -A FORWARD -p icmp -j ACCEPT 

# Log ce qui a ete refuse 
#--------------------------------------------
iptables -A INPUT   -j LOG_PUIS_DROP 
iptables -A OUTPUT  -j LOG_PUIS_DROP  
iptables -A FORWARD -j LOG_PUIS_DROP  

# Mise en place du routage du noyau
#--------------------------------------------
echo "1" > /proc/sys/net/ipv4/ip_forward

# Mise en place des routes
#--------------------------------------------
route add default gw $routeur_internet >/dev/null 2>&1
route add -net $reseau_interne gw $firewall_applicatif >/dev/null 2>&1
route add -net $reseau_reverse gw $firewall_applicatif >/dev/null 2>&1

# Affiche l'etat des regles 
#--------------------------------------------
echo ">Etat des regles du FW"
iptables -L
echo ">"
			;;


  stop)

# Vidage des chaînes 
#--------------------------------------------
iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F

#Destruction des chaînes "personnelles"
#--------------------------------------------
iptables -X

# Ouverture du firewall
#----------------------
iptables -A INPUT -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A FORWARD -j ACCEPT

# Mise en place des routes
#--------------------------------------------
route add default gw $routeur_internet >/dev/null 2>&1
route add -net $reseau_interne gw $firewall_applicatif >/dev/null 2>&1
route add -net $erseau_reverse gw $firewall_applicatif >/dev/null 2>&1
			;;

  *)
	echo "Usage: /etc/init.d/rc.firewall {start|stop}"
	exit 1
esac

exit 0

8.2.3.E - Serveur SSH :

Le serveur SSH (version 1:3.4p1-0.0woody1) s’installe de la manière suivante :
è	apt-get install ssh

Ce package dépend des packages suivants :
   - libpam0g (version >= 0.72-1) ;
   - libc6 (version >= 2.2.4-4) ;
   - libssl0.9.6 ;
   - libwrap0 ;
   - zlib1g (version >= 1:1.1.4) ;
   - libpam-modules (version >= 0.72-9) ;
   - debconf ;
   - adduser.

L’ensemble des serveurs SSH des différents serveurs de la maquette est configuré de la manière suivante :
Cette configuration est mise en place en modifiant le fichier « /etc/init.d/ssh » de la manière indiquée ci-dessous :
...
start)
	...
     echo -n "Starting OpenBSD Secure Shell server: sshd on port 22"
    start-stop-daemon --start --quiet --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd
     echo "."
     echo -n "Starting OpenBSD Secure Shell server: sshd on port 2222"
     chroot /cages/ssh usr/sbin/sshd -p 2222
	...

et en paramétrant les fichiers de configuration des serveurs SSH « /etc/ssh/sshd_config » de la manière suivante :
è	Fichier /etc/ssh/sshd_config : ListenAddress 127.0.0.1
è	Fichier /cages/ssh/etc/sshd_config : ListenAddress 0.0.0.0

8.2.3.F - Mise en places des adresses ARP statiques :

De manière à éviter l’ARP Poisoning, chaque serveur se voit doter d’un fichier de définition des adresses ARP. Le fichier suivant est implémenté sur chaque serveur à l’aide de la commande « arp -s -f nom_fichier » :
10.1.1.1      00:02:B3:CD:F9:FA
10.1.1.2      00:10:B5:F0:75:A9
10.1.1.4      00:03:BA:06:10:3D

10.1.2.1      00:02:B3:CD:F9:67
10.1.2.2      00:02:55:5B:EF:7F

10.1.3.1      00:80:5F:05:25:E5
10.1.3.2      00:02:B3:CD:F9:6A
10.1.3.3      00:10:B5:F0:99:70

10.1.4.1      00:80:5F:26:E2:3C
10.1.4.2      00:04:AC:13:DC:B2
10.1.4.3      00:08:C7:FA:A9:A8
10.1.4.4      00:80:5F:F7:DC:24
10.1.4.5      00:10:B5:B9:2C:0C

10.1.6.1      00:02:B3:CD:F9:6C
10.1.6.2      00:10:4B:65:71:CB

192.168.0.1   00:02:B3:CD:F8:9B
192.168.0.7   00:09:6B:51:69:4F
192.168.0.8   00:09:6B:51:5E:3E
192.168.0.9   00:00:39:6C:E0:8C
192.168.0.101 00:20:6F:0D:65:34

8.2.3.G - Authentification des utilisateurs sur l’annuaire LDAP :

Le paramétrage de l’authentification des utilisateurs sur l’annuaire GrandeOurse est décrit au paragraphe ‎8.2.6.D - .

Haut Précedent Suivant Titre Sommaire